Classement de termes techniques

Classement des mots techniques - Implémentation (Partie 2)

Les fonctions importantes

Création des cellules

La fonction creerCell permet de créer une cellule de traduction avec une liste de lignes, une ligne particulière (celle qui sert de base) et la langue (base) dans laquelle s'effectue la traduction.

creerCell :: [Tradln] -> Tradln -> Lang -> Traduction 
creerCell lst lin lang = Traduction (lnCode lin) lang lst_en lst_fr (lnDom1 lin) (lnDom2 lin) (lnDom3 lin) 
  where 
        lst_en = case lang of 
             En -> [TradLaTeXEn (lnTradEn lin)] 
             _ -> map TradLaTeXEn (nv (nub (map lnTradEn lst_ins))) 
        lst_fr = case lang of 
             Fr -> [TradLaTeXFr (lnTradFr lin)] 
             _ -> map TradLaTeXFr (nv (nub (map lnTradFr lst_ins)))
        
        nv lst = filter (\\a -> not (null a)) lst 
        lst_ins = filtreCode lst (lnCode lin) 

Cette fonction retourne une traduction créée avec le constructeur par défaut (ligne 2). La traduction ainsi créée contient le même code de regroupement que la ligne originelle (lncode lin), la langue lang, la liste de mot anglais lsten, la liste de mots français lstfr, et enfin les domaines (lndom1 lin) (lndom2 lin) (lndom_3 lin)

Les fonctions lst_en et lst_fr sont définis juste après le where et permettent la création des listes de mots.

  • Les fonctions nv et lst_ins servent réciproquement à éliminer les éléments vide d'une liste et à filtrer les éléments ayant le même code de regroupement.

  • La fonction lst_en n'a pas le même contenu suivant la langue :

    • En anglais la liste contient seulement le mot de la ligne de référence

    • En français la liste contient tous les mots anglais de la liste de ligne ayant le même code de regroupement. On commence par créer une liste des mots ayant le même code map ln_trad_en lst_ins puis on supprime les doublons avec la fonction nub, à éliminer les éléments vides avec nv et enfin on crée une liste de traduction LaTeX en "mappant" le tout avec le constructeur TradLaTeXEn.

  • Même chose pour la liste des mots français.

Liste par domaines

La fonction listeDomaine permet de créer une liste de traductions (cellules) appartenant au même domaine.

listeDomaine :: [Tradln] -> String -> Lang -> Int -> [Traduction] 
listeDomaine lst dom lang ver = case lang of 
    En -> map (\a -> creerCell lst a En) (nubBy (on (==) lnTradEn) (triEn (filtreDom lst_ins dom))) 
    Fr -> map (\a -> creerCell lst a Fr) (nubBy (on (==) lnTradFr) (triFr (filtreDom lst_ins dom))) 
  where lst_ins = filtreVer ver (filtreOk lst) 

La liste lst_ins contient toutes les lignes ayant le numéro de version requis et devant être intégrées. En fonction de la langue (case), les cellules sont créées de façon appropriée:

Pour l'Anglais:

  • On filtre lst_ins par domaine avec filtre_dom.

  • On trie dans l'ordre des mots Anglais avec tri_en.

  • On supprime les mots anglais en doublon avec nubBy.

  • On "mappe" la liste obtenue en appliquant la fonction \a -> creer_cell lst_ins a En afin de créer une liste de traductions (cellules) avec cette-ci.

Pour le Français, même procédure mais avec les champs associés.